Automated motor control

ABSTRACT

Input-output linearization (IOL) and extended state observer (ESO) techniques are applied to a Field Oriented Control (FOC) for Permanent Magnet Synchronous Motors (PMSM). In one such approach, at least one gain value is determined based at least in part on a given bandwidth value. Operating parameters for the motor are determined based on the at least one gain value and information from a current sensor regarding motor current. Control signals used to the control the motor are determined based on the determined operating parameters. Accordingly, automated control can be effected through setting a bandwidth value through the implementation of IOL and ESO techniques.

This application is a Continuation of prior application Ser. No. 13/833,746, filed Mar. 15, 2013, now U.S. Pat. No. 8,981,702, granted Mar. 17, 2015.

TECHNICAL FIELD

This invention relates generally to electric motor controllers, and more specifically to controlling electric motors with an improved automation aspect.

BACKGROUND

Electric motors of various kinds are well known. Generally speaking, electric motors are driven by applying a current to inputs of the motor, which currents create a magnetic field that interacts with another magnetic field to turn the motor's rotor. For example, one or more permanent magnets can provide magnetic fields to interact with the magnetic fields produced by the input current. The motor's turning can be controlled by controlling various aspects of the current applied to the motor.

Motors come in a variety of designs. A common design includes having three windings of wires through which current flows, which current flow creates magnetic fields that interact with a plurality of permanent magnets. To control a motor with a complicated design, the current control may need a complicated and automated pattern that may be changed based on feedback regarding the motor's operation.

Many of today's motor control systems (as may be used with motors used in washing machines, electronic bicycles, manufacturing applications, and any other automated motor control) contain speed and current controllers that contain parameters that must be tuned manually to achieve the desired level of system performance. Performance is usually measured in terms of the controller's disturbance rejection properties, its robustness against parameter uncertainty, and settling times. However, tuning controllers manually can be time consuming and tedious given a large application space such as motor control because motors are applied in a wide variety of applications having different motor control needs. Moreover, tuning controller parameters for a particular application does not imply that the same parameters will give desired system performance for a different application. Changing applications often degrades robustness and disturbance rejection properties of the controller. Also, many applications require control systems expertise that is often not available to software engineers that develop microcontroller based motor control solutions.

In one approach known in the art, Field Oriented Control (FOC) is used for Permanent Magnet Synchronous Motors (PMSM). Such motors have non-linear characteristics, and one way to control such motors is to linearize the characteristics and apply linear controls. The general control flow in traditional Proportional Integral (PI)-based field oriented control is shown in FIG. 1. Usage of PIs requires manual tuning of six gains (k_(p) and k_(i) for each of three PIs) to achieve desired system performance. These gains are usually found by laboratory testing. Also, there is no closed form solution to specify desired controller bandwidth (the amount of computation capability for a controller when controlling a motor) while using this approach.

In other general dynamic systems or contexts, FOC is applied using simplified and/or special input-output linearization (IOL) and extended state observer (ESO) techniques. This simplified version is called Active Disturbance Rejection Control (ADRC). Application of this approach to PMSM contexts has certain limitations. For example, applications of ADRC in this context have either used first-order ADRC for speed and PIs for i_(d) and i_(q) or first-order ADRCs for speed, i_(d) and i_(q). However, there is no need to cascade two control systems for speed and i_(q). Unnecessarily increasing the number of controllers not only increases complexity in gain design but also degrades system performance.

SUMMARY

Generally speaking and pursuant to these various embodiments, input-output linearization (IOL) and extended state observer (ESO) techniques are applied to Field Oriented Control (FOC) for Permanent Magnet Synchronous Motors (PMSM). In one such approach, at least one gain value is determined based at least in part on a given bandwidth value. Operating parameters for the motor are determined based on the at least one gain value and information from a current sensor regarding motor current. Control signals used to control the motor are determined based on the determined operating parameters. Accordingly, automated control can be effected through setting a bandwidth value through the implementation of IOL and ESO techniques. Moreover, as compared to previous applications, the total number of controllers can be reduced. These and other benefits may become clear upon making a thorough review and study of the following detailed description.

BRIEF DESCRIPTION OF THE DRAWINGS

The above needs are at least partially met through provision of the automated motor control described in the following detailed description and particularly when studied in conjunction with the drawings wherein:

FIG. 1 comprises a schematic diagram for an example prior art approach to PMSM motor control;

FIG. 2 comprises a schematic diagram of an example approach to motor control as configured in accordance with various embodiments of the invention;

FIG. 3 comprises a flow diagram of an example method of motor control as configured in accordance with various embodiments of the invention;

FIG. 4 comprises a diagram of a load torque profile for a disturbance rejection simulation of a motor control approach as configured in accordance with various embodiments of the invention;

FIG. 5 comprises a diagram of rotor speed ω_(r) and current i_(d) with disturbance rejection for given load torque profile for a disturbance rejection simulation of a motor control approach as configured in accordance with various embodiments of the invention;

FIG. 6 comprises a diagram of control efforts v_(d) and v_(g) with disturbance rejection for given load torque profile for a disturbance rejection simulation of a motor control approach as configured in accordance with various embodiments of the invention; and

FIG. 7 comprises a diagram of rotor speed ω_(r) and current i_(d) for parameter uncertainty in (rotor+load) inertia J for a disturbance rejection simulation of a motor control approach as configured in accordance with various embodiments of the invention.

Skilled artisans will appreciate that elements in the figures are illustrated for simplicity and clarity and have not necessarily been drawn to scale. For example, the dimensions and/or relative positioning of some of the elements in the figures may be exaggerated relative to other elements to help improve understanding of various embodiments of the present invention. Also, common but well-understood elements that are useful or necessary in a commercially feasible embodiment are often not depicted in order to facilitate a less obstructed view of these various embodiments. It will further be appreciated that certain actions and/or steps may be described or depicted in a particular order of occurrence while those skilled in the art will understand that such specificity with respect to sequence is not actually required. It will also be understood that the terms and expressions used herein have the ordinary technical meaning as is accorded to such terms and expressions by persons skilled in the technical field as set forth above except where different specific meanings have otherwise been set forth herein.

DETAILED DESCRIPTION

Referring now to the drawings, and in particular to FIG. 1, a prior approach to motor control will be described to help illustrate the advances described herein. In FIG. 1, a PMSM 100 is controlled using a traditional PI-based field oriented control approach. A rectifier 105 provides power to an inverter 110. The inverter 110 includes various gates or switches to take power from the rectifier 105 and apply power to current paths 112, 113, 114 for the three windings of the motor 100. The inverter 110 is controlled by the receipt of control signals from a control device 120. Current for the motor 100 is sensed (i_(a) and i_(b)) and transformed using the known mathematical transform, Clarke-Park transformation 125, to obtain feedback values i_(q) and i_(d). An estimator 130 takes available motor current (i_(α) and i_(β)) and applied voltage (V_(α) and V_(β)) values and outputs estimated rotor position θ_(est) and speed ω_(est). The estimated rotor position θ_(est) is used in the Park transformations. The estimated speed ω_(est) is compared 135 to a reference speed ω_(ref) to determine variance from the reference speed ω_(ref). The variance is applied to a speed proportional integral (PI) computation 140 to determine a reference current value (i_(q))_(ref) that relates to speed. This speed related reference current value (i_(q))_(ref) is compared 145 to the current feedback value i_(q) from the Clarke-Park transformation 125 to determine a variance, which is provided to an i_(q) current proportional integral (PI) computation 150 to determine a reference voltage value (V_(q))_(ref) to use to control the motor.

Similarly, current information i_(d) from the Clarke-Park transformation 125 is compared 160 to a reference current (i_(d))_(ref) to determine variance from the reference current (i_(d))_(ref). The variance is provided to an i_(d) current proportional integral (PI) computation 165 to determine a reference voltage value (V_(d))_(ref) to use to control the motor. The voltage reference values (V_(q))_(ref) and (V_(d))_(ref) are input to an inverse Park transformation 170 to obtain voltage values (V_(α))_(ref) and (V_(β))_(ref) used by a pulse width modulator 180 that uses these values to output control signals for the inverter 110.

In a general case, a general second-order dynamic system, such as a motor, can be represented as

ÿ=f(y,{dot over (y)},w,t)+bu

where b is a constant in terms of system parameters, u(t) is the system control input, w(t) is an external disturbance, y are the system states, and t is time. Representing the above system in the extended state-space form, where

{dot over (x)} ₁ =x ₂

{dot over (x)} ₂ =x ₃ +bu

{dot over (x)} ₃ =h,

the ADRC control law is given by

$u = \frac{{k_{1}\left( {r - {\hat{x}}_{1}} \right)} - {k_{2}{\hat{x}}_{2}} - {\hat{x}}_{3}}{b}$

where x₃=f, h={dot over (f)} and r is the reference command or set point for x₁ i.e. y. However, the IOL control law used in various approaches of this disclosure is given by

$u = {\frac{{k_{1}\left( {r - {\hat{x}}_{1}} \right)} + {k_{2}\left( {\overset{.}{r} - {\hat{x}}_{2}} \right)} + \left( {\overset{¨}{r} - {\hat{x}}_{3}} \right)}{b(t)}.}$

Note that in the IOL control law, b is not necessarily a constant, and can be a time-varying coefficient depending on other state variables. Allowing for a time-varying coefficient b provides better tracking performance and also accounts for general non-linear systems that are not affine in the control input, u. However, it should be made sure that b is never exactly equal to zero in the transient sense. This would cause a singularity in the control law and make the system unstable. Also, note that the IOL control law introduces the usage of derivatives of the reference command, r for better tracking performance. The ADRC control law ignores these derivatives to avoid differentiation of set points on a microcontroller. However, this problem can be solved by implementing a smooth reference profile generator (for example, cam profile equations) to ensure that the derivative components are smooth as well.

Each PI controller in the traditional approach can be replaced by a first-order ADRC or IOL controller. To this end, the (IOL+ESO) approach presented in this document implements a single second-order IOL controller for speed and i_(q), and a first-order IOL controller for i_(d). Hence, the total number of controllers decreases from three to two. Moreover, the (IOL+ESO) approach is a more general approach and achieves better performance. Additionally, an exact discrete-time equivalent of an (IOL+ESO) control system approach for Field Oriented Control of a PMSM can then be used for implementation of the system on a microcontroller whereas the ADRC approach only used an approximate discrete time equivalent.

One such approach to will be described with reference to FIG. 2. A PMSM 200 is controlled is this example via a rectifier 205 providing power to a motor power supply 210. The motor power supply 210 includes various gates or switches to take power from the rectifier 205 and apply power to current paths 212, 213, 214 for the three windings of the motor 200. An input 215 is configured to receive information from at least one current sensor 217, 218 configured to sense current in at least one current path 212, 213, 214 to the permanent magnet synchronous motor 200. A processing device 220 is connected to receive the information from the input 215 regarding the current i_(a), i_(b) in the at least one current path 212, 213 and configured to send signals to control operation of the permanent magnet synchronous motor 200. In the illustrated example, the processing device 200 is configured to model the motor operation using the illustrated controllers and passing data as indicated to use bandwidth and motor current values to provide feedback control.

To understand the operations of the various illustrated modules, the derivation of mathematical models that describe the operation of the controllers will now be described. To create an input-output linearization with extended state observer model for a PMSM, the modeling starts with the differential-equation model of a PMSM in d-q reference frame as given by:

$\begin{matrix} {\frac{\theta_{r}}{t} = \omega_{r}} & (1) \\ {\frac{\omega_{r}}{t} = {\frac{1}{J}\left\lbrack {T_{e} - T_{f} - T_{l}} \right\rbrack}} & (2) \\ {\frac{i_{d}}{t} = {\frac{1}{L_{d}}\left\lbrack {v_{d} - {Ri}_{d} + {P\; \omega_{r}L_{q}i_{q}}} \right\rbrack}} & (3) \\ {\frac{i_{q}}{t} = {\frac{1}{L_{q\;}}\left\lbrack {v_{q} - {Ri}_{q} - {P\; \omega_{r}L_{d}i_{d}} - {P\; \omega_{r}\lambda_{af}}} \right\rbrack}} & (4) \end{matrix}$

and the electromagnetic torque, T_(e), is given by

$\begin{matrix} {T_{e} = {{\frac{3}{2}{P\left\lbrack {\lambda_{af} + {\left( {L_{d} - L_{q}} \right)i_{d}}} \right\rbrack}i_{q}} = {{K_{T}\left( {i_{d},t} \right)}{i_{q}.}}}} & (5) \end{matrix}$

A list of symbol definitions as used in this model is provided later in this disclosure. Note that when i_(d)=0,

${\lambda_{af} = \frac{2K_{T}}{3P}},$

where K_(T) is the torque constant usually given in motor datasheets. The differential-equation model can be represented in state-space form by making the following state-variable assignments: x₁(t)=θ_(r)=Mechanical rotor position x₂(t)=ω_(r)=Mechanical rotor speed x₃(t)=i_(d)=d-axis current x₄(t)=i_(q)=q-axis current u₁(t)=v_(d)=d-axis voltage u₂(t)=v_(q)=q-axis voltage y₁(t)=i_(d) y₂(t)=ω_(r).

The above state-variable assignment demonstrates that the control inputs to the system are v_(d) and v_(q), and the control variables to be regulated by the use of reference commands are i_(d) and ω_(r).

Because two variables need to be controlled, it calls for the development of two separate (IOL+ESO) controllers that exhibit decoupling control. Likewise, v_(d) will be used to control i_(d) and v_(q) will be used to control ω_(r). The control system that regulates i_(d) will be referred to as the current controller, whereas the system that regulates ω_(r) will be referred to as the speed controller.

Consider differential-equation (3) from the above PMSM model because i_(d) is one of the variables to be controlled,

$\frac{i_{d}}{t} = {{\frac{1}{L_{d}}\left\lbrack {{- {Ri}_{d}} + {P\; \omega_{r}L_{q}i_{q}}} \right\rbrack} + {\frac{1}{L_{d}}v_{d}}}$

Making the respective state-variable assignments shown above, the above equation can be written as

{dot over (y)} ₁ =f ₁(x ₂ ,x ₃ ,x ₄)+b ₁ u ₁  (6)

where f₁ is a function of the designated state-variables and other motor parameters and

$b_{1} = {\frac{1}{L_{d}}.}$

Note that equation (6) for the plant is in input-output form, and hence it can be modified to be represented in extended state-space form before an IOL control law and ESO can be developed for the system. Reassigning state-variables for the development of an (IOL+ESO) controller, the above plant model can be represented in state-space form as

{dot over (x)} ₁₁ =x ₂₁ +b ₁ u ₁

{dot over (x)} ₂₁ =h ₁

y ₁ =x ₁₁ =x ₃ =i _(d)

where x₂₁=f₁ and h₁={dot over (f)}₁. The extended state observer for the above system is given by

{dot over ({circumflex over (x)}₁₁ ={circumflex over (x)} ₂₁ +l ₁₁(x ₁₁ −{circumflex over (x)} ₁₁)+b ₁ u ₁

{dot over ({circumflex over (x)}₂₁ =l ₂₁(x ₁₁ −{circumflex over (x)} ₁₁)

and the input-output linearization control law is given by

$u_{1} = \frac{{k_{11}\left( {r_{1} - {\hat{x}}_{11}} \right)} + \left( {{\overset{.}{r}}_{1} - {\hat{x}}_{21}} \right)}{b_{1\;}}$

where l₁₁ and l₂₁ are the observer gains, k₁₁ is the controller gain and r₁ is the reference command for x₁₁, i.e., i_(d).

Now, consider differential-equation (2) from the PMSM model for development of the speed controller,

$\frac{\omega_{r}}{t} = {{\frac{1}{J}\left\lbrack {{\frac{3}{2}{P\left\lbrack {\lambda_{af} + {\left( {L_{d} - L_{q}} \right)i_{d}}} \right\rbrack}i_{q}} - T_{f} - T_{l}} \right\rbrack}.}$

Because {dot over (ω)}_(r) does not directly depend on the system inputs v_(d) or v_(q), a higher order of the same differential-equation can be considered for the development of (IOL+ESO) controller. Hence,

$\frac{^{2}\omega_{r}}{t^{2}} = {{f\left( {\omega_{r},i_{d},i_{q},v_{d}} \right)} + {\frac{3P}{2{JL}_{q\;}}\left( {\lambda_{af} + {\left( {L_{d} - L_{q}} \right)i_{d}}} \right){v_{q}.}}}$

Making respective state-variable assignments, the above equation becomes

ÿ ₂ =f ₂(x ₂ ,x ₃ ,x ₄ ,u ₁)+b ₂ u ₂  (7)

where f₂ is a function of the designated state-variables and other motor parameters, whereas

${b_{2}(t)} = {\frac{3P}{2{JL}_{q\;}}{\left( {\lambda_{af} + {\left( {L_{d} - L_{q}} \right){i_{d}(t)}}} \right).}}$

Note that b₂ is a time-varying variable due to its dependence on i_(d). Although b₂ is time-varying there is no singularity in the control law due to a constant term in the expression for b₂(t). Also, note that effects due to u₁ are lumped into the non-linear unknown function, f₂ thus introducing decoupling control. Once again, because the plant equation is in input-output form, it can be converted to be represented in extended state-space form before an IOL control law and ESO can be developed for the system. Reassigning state-variables for the development of an (IOL+ESO) controller, the above plant model can be represented in state-space form as

{dot over (x)} ₁₂ =x ₂₂

{dot over (x)} ₂₂ =x ₃₂ +b ₂u₂

{dot over (x)} ₃₂ =h ₂

y ₂ =x ₁₂ =x ₂=ω_(r)

where x₃₂=f₂ and h₂={dot over (f)}₂. The extended state observer for the above system is given by

{dot over ({circumflex over (x)}₁₂ ={circumflex over (x)} ₂₂ +l ₁₂(x ₁₂ −{circumflex over (x)} ₁₂)+b ₁ u ₁

{dot over ({circumflex over (x)}₂₂ ={circumflex over (x)} ₃₂ +l ₂₂(x ₁₂ −{circumflex over (x)} ₁₂)+b ₂ u ₂

{dot over ({circumflex over (x)}₃₂ =l ₃₂(x ₁₂ −{circumflex over (x)} ₁₂)

and the input-output linearization control law is given by

$u_{2} = \frac{{k_{12}\left( {r_{2} - {\hat{x}}_{12}} \right)} + {k_{22}\left( {{\overset{.}{r}}_{2} - {\hat{x}}_{22}} \right)} + \left( {{\overset{¨}{r}}_{2} - {\hat{x}}_{32}} \right)}{b_{2}}$

where l₁₂, l₂₂ and l₃₂ are the observer gains, k₁₂ and k₂₂ are the controller gains, and r₂ is the reference command for x₁₂, i.e., ω_(r).

So configured, through the development of two (IOL+ESO) controllers, measurements (as available in sensed FOC approaches) or estimates (as available in sensor-less FOC approaches) of only i_(d) and ω_(r) are used in feedback; whereas, in traditional PI-based FOC, measurements or estimates of i_(d), ω_(r) and i_(q) are required in feedback. Also, only approximate values of b₁ and b₂ need to be known; the control system will have zero steady-state error even if exact values are not known.

The next step in control design is to enable bandwidth tuning of the (IOL+ESO) controllers through controller and observer gains. This is achieved via mathematical pole-placement. In this example, let ω_(c1) and ω_(o1) be the desired controller and observer bandwidths respectively for the current (IOL+ESO) system. Likewise, let ω_(c2) and ω_(o2) be the desired controller and observer bandwidths respectively for the speed (IOL+ESO) system. These desired bandwidths are typically received from a user or system designer.

For purposes of gain design and illustration, consider the speed controller and its third-order extended state observer shown above. Note that all equations for the speed controller bear the subscript 2, whereas equations for the current controller have subscript 1. The respective extended state-space form can be written as a linear system,

{dot over (x)} ₂ =A ₂ x ₂ +B ₂ u ₂ +E ₂ h ₂

y ₂ =C ₂ x ₂

where

${A_{2} = \begin{bmatrix} 0 & 1 & 0 \\ 0 & 0 & 1 \\ 0 & 0 & 0 \end{bmatrix}},{B_{2} = \begin{bmatrix} 0 \\ b_{2} \\ 0 \end{bmatrix}},{E_{2} = \begin{bmatrix} 0 \\ 0 \\ 1 \end{bmatrix}},{C_{2} = {\begin{bmatrix} 1 & 0 & 0 \end{bmatrix}.}}$

If the observer gain matrix is given by

${L_{2} = \begin{bmatrix} l_{12} \\ l_{22} \\ l_{32} \end{bmatrix}},$

the characteristic polynomial for the observer is given by

λ_(o2)(s)=|det(s1−(A ₂ −L ₂ C ₂))|=s ³ +l ₁₂ s ² +l ₂₂ s+l ₃₂.

Now, the observer gains are selected such that λ_(o2)(s) is Hurwitz, meaning that all coefficients are positive and none are mathematically imaginary. This can be done by placing all poles at −ω_(o2) and thus enabling bandwidth tuning. Hence,

λ_(o2)(s)=s ³ +l ₁₂ s ² +l ₂₂ s+l ₃₂=(s+ω _(o2))³

Comparing both equations above,

l ₁₂=3ω_(o2) , l ₂₂=3ω_(o2) ² , l ₃₂=ω_(o2) ³.

Similarly, for the speed IOL control law, gains are selected such that the characteristic polynomial,

λ_(c1)(s)=s ² +k ₂₂ s+k ₁₂=(s+ω _(c))²

is Hurwitz and all poles are placed at −ω_(c). Once again, comparing the above equations,

k ₁₂=ω_(c2) ² , k ₂₂=2ω_(c2).

Using a similar approach, gains can be designed for the lower-order current IOL and ESO. Gains that enable bandwidth tuning for both controllers and observers are summarized below.

l ₁₁=2ω_(o1) , l ₁₂=ω_(o1) ²

k ₁₁=ω_(c1)

l ₁₂=3ω_(o2) , l ₂₂=3ω_(o2) ² , l ₃₂=ω_(o2) ³

k ₁₂=ω_(c2) ² , k ₂₂=2ω_(c2)

It is common practice to design controllers with a desired bandwidth based on design objectives; however, choosing a bandwidth for the observers may pose a challenge. Through simulations and experimentation it is found that observer bandwidths may be specified using the following rule,

ω_(o)≈5˜10ω_(c).

Using the starting point above, the discrete-time equivalent of the control system is derived so that embedded implementation of the control system on a micro-controller is possible. All previous sections assumed that the developed controller is continuous in nature; whereas, this section makes the transition to a discrete version of the (IOL+ESO) controllers.

The discretization of the IOL control law is generally trivial; however, discretization of the ESO may pose some challenges. The discrete-time equivalents of the two IOL controls laws are given by:

${u_{1}(k)} = \frac{{k_{11}\left( {r_{1} - {{\hat{x}}_{11}(k)}} \right)} + \left( {{\overset{.}{r}}_{1} - {{\hat{x}}_{21}(k)}} \right)}{b_{1}}$ ${u_{2}(k)} = {\frac{{k_{12}\left( {r_{2} - {{\hat{x}}_{12}(k)}} \right)} + {k_{22}\left( {{\overset{.}{r}}_{2} - {{\hat{x}}_{22}(k)}} \right)} + \left( {{\overset{¨}{r}}_{2} - {{\hat{x}}_{32}(k)}} \right)}{b_{2}}.}$

For the discretization of the ESO, first consider a general continuous-time plant of the form,

{dot over (x)}(t)=Ax(t)+Bu(t)

y(t)=Cx(t)

The exact discrete-time equivalent of the above system is given by

x(k + 1) = A_(d)x(k) + B_(d)u(k) y(k) = C_(d)x(k) where A_(d) = ^(AT) = ℒ⁻¹{(sI − A)⁻¹}|_(t = T)B_(d) = ∫₀^(T)^(An)Bn C_(d) = C

and T is the sampling-time of the discrete-time system.

Now, consider the continuous-time current ESO represented in general form,

$\begin{bmatrix} {{\overset{\overset{.}{\hat{}}}{x}}_{11}(t)} \\ {{\overset{\overset{.}{\hat{}}}{x}}_{21}(t)} \end{bmatrix} = {{\begin{bmatrix} {- l_{11}} & 1 \\ {- l_{21}} & 0 \end{bmatrix}\begin{bmatrix} {{\hat{x}}_{11}(t)} \\ {{\hat{x}}_{21}(t)} \end{bmatrix}} + {\begin{bmatrix} b_{1} & l_{11} \\ 0 & l_{21} \end{bmatrix}\begin{bmatrix} {u_{1}(t)} \\ {i_{d}(t)} \end{bmatrix}}}$

In view of the above system of equations, for the current ESO in continuous-time,

${A_{1} = \begin{bmatrix} {- l_{11}} & 1 \\ {- l_{21}} & 0 \end{bmatrix}},{B_{1} = {\begin{bmatrix} b_{1} & l_{11} \\ 0 & l_{21} \end{bmatrix}.}}$

Using the discrete-time equivalent equations shown earlier and the relationship between observer gains and bandwidth shown above, the discrete version of the current ESO is given by

$\begin{bmatrix} {{\hat{x}}_{11}\left( {k + 1} \right)} \\ {{\hat{x}}_{21}\left( {k + 1} \right)} \end{bmatrix} = {{A_{d\; 1}\begin{bmatrix} {{\hat{x}}_{11}(k)} \\ {{\hat{x}}_{21}(k)} \end{bmatrix}} + {B_{d\; 1}\begin{bmatrix} {u_{1}(k)} \\ {i_{d}(k)} \end{bmatrix}}}$ where $A_{d\; 1} = {{^{{- \omega_{o\; 1}}T}\begin{bmatrix} {{{- \omega_{o\; 1}}T} + 1} & T \\ {{- \omega_{o\; 1}^{2}}T} & {{\omega_{o\; 1}T} + 1} \end{bmatrix}}\mspace{14mu} {and}}$ $B_{d\; 1} = {{^{{- \omega_{o\; 1}}T}\begin{bmatrix} {b_{1}T} & {{\omega_{o\; 1}T} - 1 + ^{\omega_{o\; 1}T}} \\ {{\omega_{o\; 1}b_{1}T} + b_{1} - {b_{1}^{\omega_{o\; 1}T}}} & {\omega_{o\; 1}^{2}T} \end{bmatrix}}.}$

Similarly, the discrete version of the speed ESO is given by

$\begin{bmatrix} {{\hat{x}}_{12}\left( {k + 1} \right)} \\ {{\hat{x}}_{22}\left( {k + 1} \right)} \\ {{\hat{x}}_{32}\left( {k + 1} \right)} \end{bmatrix} = {{A_{d\; 2}\begin{bmatrix} {{\hat{x}}_{12}(k)} \\ {{\hat{x}}_{22}(k)} \\ {{\hat{x}}_{32}(k)} \end{bmatrix}} + {B_{d\; 2}\begin{bmatrix} {u_{2}(k)} \\ {\omega_{r}(k)} \end{bmatrix}}}$ where $A_{d\; 2} = {^{{- \omega_{o\; 2}}T}\begin{bmatrix} \begin{matrix} {{0.5\omega_{o\; 2}^{2}T^{2}} -} \\ {{2\omega_{o\; 2}T} + 1} \end{matrix} & {{{- 0.5}\omega_{o\; 2}T^{2}} + T} & {0.5T^{2}} \\ {{\omega_{o\; 2}^{3}T^{2}} - {3\omega_{o\; 2}^{2}T}} & \begin{matrix} {{{- \omega_{o\; 2}^{2}}T^{2}} +} \\ {{\omega_{o\; 2}T} + 1} \end{matrix} & {{\omega_{o\; 2}T^{2}} + T} \\ {{0.5\omega_{o\; 2}^{4}T^{2}} - {\omega_{o\; 2}^{3}T}} & {{- 0.5}\omega_{o\; 2}^{3}T^{2}} & \begin{matrix} {{0.5\omega_{o\; 2}^{2}T^{2}} +} \\ {{\omega_{o\; 2}T} + 1} \end{matrix} \end{bmatrix}}$ and $B_{d\; 2} = {{^{{- \omega_{o\; 2}}T}\begin{bmatrix} {0.5b_{2}T^{2}} & \begin{matrix} {{{- 0.5}\omega_{o\; 2}^{2}T^{2}} +} \\ {{2\omega_{o\; 2}T} - 1 + ^{{- \omega_{o\; 2}}T}} \end{matrix} \\ {{\omega_{o\; 2}b_{2}T^{2}} + {b_{2}T}} & {{{- \omega_{o\; 2}^{3}}T^{2}} + {3\omega_{o\; 2}^{2}T}} \\ \begin{matrix} {{0.5\omega_{o\; 2}^{2}b_{2}T^{2}} +} \\ {{\omega_{o\; 2}b_{2}T} + b_{2} - {b_{2}^{\omega_{o\; 2}T}}} \end{matrix} & {{{- 0.5}\omega_{o\; 2}^{4}T^{2}} + {\omega_{o\; 2}^{3}T}} \end{bmatrix}}.}$

A reference profile generator is used to provide smooth time-varying reference commands for r₁, {dot over (r)}₁, r₂, {dot over (r)}₂ and {umlaut over (r)}₂ where r₁ and r₂ are the reference commands for i_(d) and ω_(r) respectively. Not using smooth reference commands may excite unstable dynamics in a system and cause the actuators to saturate or the system to go unstable. Because the second derivative of r₂ is used, the profile generator equations for r₂ are used, and the equations for r₁ then become clear. Let (ω_(r))_(des) be the desired set point for rotor speed and T_(des) be the absolute time within which the rotor speed, ω_(r) should reach (ω_(r))_(des). The profile generator equations for r₂ are given by:

${r_{2}(t)} = {\left( \omega_{r} \right)_{des}\left\lbrack {\frac{t}{T_{des}} - {\frac{1}{2\pi}\sin \; \frac{2\pi \; t}{T_{des}}}} \right\rbrack}$ ${{\overset{.}{r}}_{2}(t)} = {\frac{\left( \omega_{r} \right)_{des}}{T_{des}}\left\lbrack {1 - {\cos \; \frac{2\pi \; t}{T_{des}}}} \right\rbrack}$ ${{\overset{¨}{r}}_{2}(t)} = {\frac{2{\pi \left( \omega_{r} \right)}_{des}}{T_{des}^{2}}\sin \; {\frac{2\pi \; t}{T_{des}}.}}$

Similar equations can be written for r₁(t) and {dot over (r)}₁(t) using the above structure.

Referring again to FIG. 2, in operation, the processing device 220 is to implement selected ones of the above equations to control the motor in corresponding modules. First, to obtain the information used in the equations for the illustrated example, the processing device 220 is configured to transform the sensed motor current (i_(a) and i_(b)) using the known mathematical transform, Clarke-Park transformation 225, to obtain feedback values i_(q) and i_(d). Estimated values can also be used. An estimator 230 takes available motor current (i_(α) and i_(β)) and applied voltage (V_(α) and V_(β)) values and outputs estimated rotor position θ_(est) and speed ω_(est). The estimated rotor position θ_(est) is used in the Park transformations. The estimated speed ω_(est) is used in the ESO speed module 240. In addition to the estimated rotor position θ_(est), estimated speed ω_(est), and current value i_(d), various reference values are received.

Those skilled in the art will recognize and appreciate that such a processor device 220 can comprise a fixed-purpose hard-wired platform or can comprise a partially or wholly programmable platform. All of these architectural options are well known and understood in the art and require no further description here. Moreover, those skilled in the art will recognize and understand that such an apparatus as illustrated in FIG. 2 may be comprised of a plurality of physically distinct elements as is suggested by the illustration. It is also possible, however, to view this illustration as comprising a logical view, in which case one or more of these elements can be enabled and realized via a shared platform. It will also be understood that such a shared platform may comprise a wholly or at least partially programmable platform as are known in the art.

In the illustrated example, the processing device 220 receives a bandwidth value (ω)_(ref), for example, through a user interface or as a value received from a separate program in communication with the processing device 220. Also, the processing device 220 may receive a reference current value (i_(d))_(ref) using similar methods. The processing device 220 is configured to determine at least one gain value based at least in part on the bandwidth value. In the approach described above for the ESO speed module 240, the processing device 220 is further configured to determine the at least one gain value based at least in part on the bandwidth value by selecting observer gains such that a characteristic polynomial for the extended state observer speed module 240 has all positive and real coefficients by placing all poles at an extended state observer bandwidth.

The processing device 220 is also configured to determine operating parameters for the motor 200 based at least in part on the at least one gain value and the information from the at least one current sensor 217, 218 regarding the current in the at least one current path 212, 213, 214 using field oriented control by applying input-output linearization with an extended state observer feedback, for example, through algorithmic implementation of the above described mathematical relationships. The operating parameters can be determined by the processing device's 220 implementing one second-order input-output linearization controller 245 to output a speed control value using a reference rotational speed and speed extended state observer feedback in combination with implementing a single-order input-output linearization controller 255 to output a current control value using a reference d-axis current, (i_(d))_(ref), and current extended state observer feedback. By one approach, the processing device 220 is further configured to implement the one second-order input-output linearization controller 245 to output a speed control value by receiving information regarding a reference speed and feedback from an extended state observer speed module 240 of the processing device 220. The information regarding the reference speed and ESO speed module 240 feedback in the illustrated example, includes the reference speed value (ω)_(ref), as compared 246 to a state variable {circumflex over (x)}₁₂ received from the ESO speed module 240, a first derivative of the reference speed value ({dot over (ω)})_(ref) as compared 247 to a state variable {circumflex over (x)}₂₂ received from the ESO speed module 240, and a second derivative of the reference speed value ({umlaut over (ω)})_(ref). Moreover, in the illustrated example, the control value from the IOL speed module 245 is modified 248 using a state variable {circumflex over (x)}₃₂ received from the ESO speed module 240, which state variable is combined with the time varying control law coefficient b₂ as illustrated.

To provide such feedback, the processing device's 220 extended state observer speed module 240 is configured to receive feedback information regarding motor speed and control signals from the one second-order input-output linearization controller 245 and to provide extended state observer outputs as the feedback to the one second-order input-output linearization controller 245. In the example of FIG. 2, the information regarding motor speed received by the ESO speed module 240 includes the estimated speed ω_(est) from the estimator 230 whereas the control signals from the IOL speed controller 245 include the time varying control law coefficient b₂.

Furthermore, the processing device 220 is configured to implement the single-order input-output linearization controller 245 to output a current control value by receiving information regarding a reference current and feedback from an extended state observer current module. The information regarding the reference current includes, in the FIG. 2 example, a reference current, (i_(d))_(ref), received by the processing device 220 as compared 256 to a state variable {circumflex over (x)}₁₁ received from the ESO current module 250 and a first derivative of the reference current value ({dot over (i)}_(d))_(ref). By one approach, the processing device's 220 extended state observer current module 250 is configured to receive feedback information regarding d-axis current, i_(d), and control signals from the single-order input-output linearization controller 255 and to provide extended state observer outputs as the feedback to the single-order input-output linearization controller 255. In the illustrated example, the control value from the IOL current module 255 is modified 258 using a state variable {circumflex over (x)}₂₁ received from the ESO current module 250, which state variable is combined with the time varying control law coefficient b₁ as illustrated. Also as illustrated in the example of FIG. 2, the control signals from the single-order IOL current controller 255 received by the ESO current module 250 include the time varying control law coefficient b₁.

The processing device 220 is further configured to effect sending control signals based on the operating parameters to a control circuit 210 to control operation of the motor 200. In the illustrated example, the above described processes result in a voltage reference value (V_(q))_(ref) from the speed control modules and the voltage reference value (V_(d))_(ref) from the current control modules. These values are input to an inverse Park transformation 270 to obtain voltage values (V_(α))_(ref) and (V_(β))_(ref) used by a pulse width modulator 280 that uses these values to output control signals for the inverter 210.

So configured, a controller for such permanent magnet motors using a non-linear control approach called input-output linearization (IOL) with extended state observer (ESO) can have the following features: automated controller gain design via pole-placement, bandwidth tuning, improved disturbance rejection, improved robustness against parameter uncertainty, discrete-time equivalent of controller for embedded implementations, and implementation of a smooth reference profile generator.

A method 300 of controlling a PMSM will be described with reference to FIG. 3. The method includes receiving 305 by a processing device information from at least one current sensor regarding current in at least one current path to a permanent magnet synchronous motor and determining 310 by the processing device at least one gain value based at least in part on a bandwidth value. Determining the gain value may include selecting 312 observer gains such that a characteristic polynomial for an extended state observer speed module has all positive and real coefficients by placing all poles at an extended state observer bandwidth. In a further aspect, determining the gain value may include selecting 314 input-output controller gains such that a characteristic polynomial for an input-output linearization control module has all positive and real coefficients by placing all poles at an input-output linearization control module bandwidth.

The method further includes determining 315 by the processing device operating parameters for the permanent magnet synchronous motor based at least in part on the at least one gain value and the information from the at least one current sensor regarding the current in the at least one current path using field oriented control by applying input-output linearization with an extended state observer feedback. In one aspect, determining the operating parameters includes implementing 320 one second-order input-output linearization controller to output a speed control value using a reference rotational speed and speed extended state observer feedback. For example, implementing the one second-order input-output linearization controller may include receiving 322 information regarding a reference speed and feedback from an extended state observer speed module. In such an example, the extended state observer speed module receives 324 feedback information regarding motor speed and control signals from the one second-order input-output linearization controller and provides extended state observer outputs as the feedback to the one second-order input-output linearization controller.

In another aspect, determining the operating parameters includes implementing 325 a single-order input-output linearization controller to output a current control value using a reference d-axis current and current extended state observer feedback. For example, implementing the single-order input-output linearization controller to output a current control value may include receiving 327 information regarding a reference current and feedback from an extended state observer current module. In such an example, the extended state observer current module receives 329 feedback information regarding d-axis current and control signals from the single-order input-output linearization controller and provides extended state observer outputs as the feedback to the single-order input-output linearization controller.

Those skilled in the art will appreciate that the above-described processes are readily enabled using any of a wide variety of available and/or readily configured platforms, including partially or wholly programmable platforms as are known in the art or dedicated purpose platforms as may be desired for some applications. One such process is described above with reference to FIG. 2.

In an additional alternative embodiment, the functionality or logic described in FIG. 3 may be embodied in the form of code that may be executed in a separate processor circuit. If embodied in software, each block may represent a module, segment, or portion of code that comprises program instructions to implement the specified logical function(s). The program instructions may be embodied in the form of source code that comprises human-readable statements written in a programming language or machine code that comprises numerical instructions recognizable by a suitable execution system such as a processor in a computer system or other system. The machine code may be converted from the source code, etc. If embodied in hardware, each block may represent a circuit or a number of interconnected circuits to implement the specified logical function(s).

As described, the (IOL+ESO) based speed controller for Field Oriented Control of Permanent Magnet Synchronous Motors is capable of enhanced disturbance rejection and robustness against parameter uncertainties. For a PMSM, disturbances include T_(l) and T_(f) while motor parameters include J, R, L_(d), L_(q), P and λ_(af). This controller also enables bandwidth tuning and automated gain design via pole-placement, thus eliminating the overhead of manual tuning for achieving desired system performance. An exact discrete-time equivalent of the (IOL+ESO) controller allows direct implementation on a microcontroller operatively connected to the motor. Also, a reference command profile generator generates smooth reference commands for the motor.

Aspects of the (IOL+ESO) control system for FOC of PMSM presented in this disclosure have been simulated and tested in SIMULINK simulation program. This includes disturbance rejection, robustness, gain design/bandwidth tuning via pole-placement, discretized controller acting on a continuous plant model and usage of smooth reference commands from a profile generator.

For purposes of simulation, motor parameters used for an 400 W motor are P=4, L_(d)=L_(q)=13.3 mH, R=4.7Ω,

${J = {0.62 \times 10^{- 4}\frac{kg}{m^{2}}}},$

T_(l)=0.5 N·m, λ_(af)=0.094 V·s, B=0.001 N·m·s where B is the friction coefficient and T_(f)=Bω_(r). The controller bandwidths are tuned such that there are minimal oscillations and overshoot when the above motor parameters and specifically T_(l)=0.5 N·m are used. Accordingly, the bandwidths used are

ω_(c1)=150 Hz, ω_(o1)=10ω_(c1)=1500 Hz

ω_(c2)=50 Hz, ω_(o2)=10ω_(c2)=500 Hz.

The sampling frequency for the discrete-time control system is 10 kHz. The motor is initialized from rest condition, i.e., initial conditions on ω_(r) and i_(d) are both zero. The set point for rotor speed ω_(r) is 3000 rpm, which is reached using a smooth reference profile; whereas, i_(d) is controlled such that it remains zero, i.e., reference command for i_(d) is 0 Amp.

The controller's disturbance rejection properties are demonstrated by first simulating the system under normal conditions (for which the controller was designed), and then introducing disturbances to check if the system is stable with zero steady-state error and settling times are short after the disturbance events have occurred. In motor control applications, load torque is considered as a disturbance. For example, a 250 millisecond transient simulation where a load torque of 0.5 N·m is used for the first 150 milliseconds, and then step load inputs of 1 N·m and 2 N·m are introduced at 150 ms and 200 ms respectively. These step load inputs thus create disturbance events. Accordingly, FIG. 4 shows the load torque profile described here, and FIG. 5 displays transient simulation results for ω_(r) and i_(d) while using this load torque profile.

In the plots in FIG. 5, actual rotor speed ω_(r) and current i_(d) are laid on top of their desired reference command profiles. It can be seen that exact tracking is achieved for the entire simulation except for the small transients when disturbances are introduced. Because the overshoot in rotor speed ω_(r) is extremely small and there are no undesired oscillations in ω_(r) or i_(d) when disturbances are introduced, the control system is seen as having great disturbance rejection properties.

For reference, FIG. 6 shows the corresponding control efforts v_(d) and v_(q) required to follow the desired reference command profiles for ω_(r) and i_(d) while exhibiting disturbance rejection. Because the load of the system is increasing due to disturbances at 150 ms and 200 ms, one would expect that the control effort increases as seen in FIG. 6.

One way to exhibit the controller's robustness against parameter uncertainty would be to introduce uncertainty in the controller and compare simulation results for different levels of uncertainty. Let J_(exact) be the exact (rotor+load) inertia of the actual system and J_(control) be the approximate value of J_(exact). In real-world implementations, J_(control) is usually known through motor datasheets and other preliminary calculations. Recall that J_(control) will be used in b₂(t) from the speed IOL control law, which is where the uncertainty lies. For simulation purposes, J_(control) is varied from J_(exact) to 2×J_(exact), while load torque T_(l) is kept constant at 0.5 N·m.

It can be seen from FIG. 7 that transient performance for both levels of uncertainty (1.5×J_(exact) and 2×J_(exact)) is almost exactly the same as one with no uncertainty. Hence, it would be safe to assume that the control system is robust against parameter uncertainties. Similar simulations can be developed to demonstrate robustness against other parameter uncertainties such as R, L_(d), L_(q), etc.

Those skilled in the art will recognize that a wide variety of modifications, alterations, and combinations can be made with respect to the above described embodiments without departing from the scope of the invention, and that such modifications, alterations, and combinations are to be viewed as being within the ambit of the inventive concept.

LIST OF SYMBOLS

θ_(r): Mechanical rotor position ω_(r): Mechanical rotor speed i_(d): d-axis current i_(q): q-axis current L_(d): d-axis inductance L_(q): q-axis inductance v_(d): d-axis voltage v_(q): q-axis voltage J: Inertia (rotor+load) T_(e): Electromagnetic torque T_(f): Friction torque T_(l): Load torque R: Stator resistance P: Number of poles λ_(af): Flux linkage between permanent magnets and stator phases K_(T): Torque constant ω_(c1): Current controller (IOL) bandwidth ω_(o1): Current observer (ESO) bandwidth ω_(c2): Speed controller (IOL) bandwidth ω_(o2): Speed observer (ESO) bandwidth 

What is claimed is:
 1. An apparatus comprising: an input configured to receive information from at least one current sensor configured to sense current in at least one current path to a permanent magnet synchronous motor; a processing device connected to receive the information from the input regarding the current in the at least one current path and configured to send signals to control operation of the permanent magnet synchronous motor, the processing device configured to: receive a bandwidth value; and determine at least one gain value based at least in part on the bandwidth value; determine operating parameters for the motor based at least in part on the at least one gain value and the information from the at least one current sensor regarding the current in the at least one current path using field oriented control by applying input-output linearization with an extended state observer feedback; effect sending control signals based on the operating parameters to a control circuit to control operation of the motor. 